RubyKaigi 2023: Build Your Own SQLite3
SQLite3
Public domain
Single-file db
Embedded SQLite3 in
カーナビ
iOS Androidアプリ
Webアプリ
マスターデータ
ブラウザー
Google Chrome
wasm
マイコン
Target device and OS
RP2040
Bara metal
monsterlab
PicoRuby
マイコン上で動くシェル環境
irbを起動
SQLite3をソースからビルドする
オプションが異常に多い
Linux, Windowsではない場合、SQLITE_OS_OTHERというオプションの明示的な指定が必要
SQLITE_OS_OTHERを指定した場合、sqlite3_os_initを呼んであげる
sqlite3_open_v2という関数が呼ばれる
Cのopenが呼ばれる
Linuxの場合はシステムコール
そうではない場合はSQLite3においてVFSと呼ばれるものを実装してあげる必要がある
VFSのstructたち
sqlite3_mem_methods
sqlite3_vfs
sqlite3_io_methods
sqlite3_file
SQLite3のCのコードの中で(実行時に)PicoRuby? mruby?のメソッドが呼ばれている
prb_file_new
prb_file_read
prb_funcall
SQLite3.vfs_methods = File::VFS.vfs_methods
SQLite3のAPIをいじくりまわしてRubyを呼ぶようにしているyuiseki.icon
自作キーボード
RP2040がベースで、SDカードが付いている
PicoRubyで動いている
SQLite3でキーロガーを作っている
キーアサインの最適化に使える
左右分割キーボード
最も良く押されているキーを左右に等しく配置すると速く入力できるはず
hjklが最も良く押されている
vimmerだから…